package com.ruralflow.flow.service;

import java.util.List;
import com.ruralflow.flow.domain.FlowApply;
import com.ruralflow.flow.domain.vo.FlowApplyApproveReqVO;

/**
 * 流动申请Service接口
 * 
 * @author ruralflow
 * @date 2025-02-17
 */
public interface IFlowApplyService 
{
    /**
     * 查询流动申请
     * 
     * @param applyId 流动申请主键
     * @return 流动申请
     */
    public FlowApply selectFlowApplyByApplyId(Long applyId);

    /**
     * 查询流动申请列表
     * 
     * @param flowApply 流动申请
     * @return 流动申请集合
     */
    public List<FlowApply> selectFlowApplyList(FlowApply flowApply);

    /**
     * 新增流动申请
     * 
     * @param flowApply 流动申请
     * @return 结果
     */
    public int insertFlowApply(FlowApply flowApply);

    /**
     * 修改流动申请
     * 
     * @param flowApply 流动申请
     * @return 结果
     */
    public int updateFlowApply(FlowApply flowApply);

    /**
     * 批量删除流动申请
     * 
     * @param applyIds 需要删除的流动申请主键集合
     * @return 结果
     */
    public int deleteFlowApplyByApplyIds(Long[] applyIds);

    /**
     * 删除流动申请信息
     * 
     * @param applyId 流动申请主键
     * @return 结果
     */
    public int deleteFlowApplyByApplyId(Long applyId);

    /**
     * 审批流动申请流程
     * @param flowApplyApproveReqVO 审批参数
     * @return 结果
     */
    int approveFlowApply(FlowApplyApproveReqVO flowApplyApproveReqVO);

    /**
     * 查询申请单数量
     * @return
     */
    Integer selectCountFlowApply();
}
